/**
 * 小朋友开始写插件
 * 
 * 错误模板
 * 校验规则
 * 顺序报错
 * 添加同步验证 异步验证
 * 动态添加验证
 * 添加事件修饰符
 */
import Directive from './directive'
import validator from './validator'
 /**
 *   // 1. 添加全局方法或属性
 *   Vue.myGlobalMethod = function () {
 *     // 逻辑...
 *   }
 * 
 *   // 2. 添加全局资源
 *   Vue.directive('my-directive', {
 *     bind (el, binding, vnode, oldVnode) {
 *      // 逻辑...
 *     }
 *     ...
 *   })
 * 
 *   // 3. 注入组件
 *   Vue.mixin({
 *     created: function () {
 *       // 逻辑...
 *     }
 *     ...
 *   })
 * 
 *   // 4. 添加实例方法
 *   Vue.prototype.$myMethod = function (methodOptions) {
 *     // 逻辑...
 *   }
 * 
 */
function install (Vue, options = {}) {
  const directive = new Directive(Vue, {
    mode: options.mode,
    errorIcon: options.errorIcon,
    errorClass: options.errorClass || null,
    errorForm: options.errorForm,
    validators: validator,
    messages: options.messages
  })
  // 添加全局资源
  directive.install(Vue)
}
if (typeof window !== 'undefined' && window.Vue) {
  install(window.Vue)
}

export default {
  install
}